package main

import (
	"database/sql/driver"
	"fmt"
	"strings"
	"time"
)

// ConnConfig 定义数据库连接配置
type ConnConfig struct {
	ServerURL  string
	Timeout    time.Duration
	DBType     string
	Connection string
}

// SQLRequest 定义API请求的数据结构
type SQLRequest struct {
	SQL        string        `json:"sql"`
	Args       []interface{} `json:"args"`
	RequestID  string        `json:"requestId,omitempty"`
	Operation  string        `json:"operation"`
	DBType     string        `json:"db_type"`
	Connection string        `json:"connection"`
}

// SQLResponse 定义API响应的数据结构
type SQLResponse struct {
	Columns []string        `json:"columns,omitempty"`
	Rows    [][]interface{} `json:"rows,omitempty"`
	Error   string          `json:"error,omitempty"`
}

// splitAtSign 将字符串在@符号处分割
func splitAtSign(s string) []string {
	return strings.Split(s, "@")
}

// hasProtocol 检查字符串是否包含协议前缀
func hasProtocol(s string) bool {
	return strings.HasPrefix(s, "http://") || strings.HasPrefix(s, "https://")
}

// buildRequestURL 构建完整的API请求URL
func buildRequestURL(serverURL string) string {
	return fmt.Sprintf("%s/sql", serverURL)
}

// valuesToInterface 将driver.Value切片转换为interface{}切片
func valuesToInterface(args []driver.Value) []interface{} {
	result := make([]interface{}, len(args))
	for i, v := range args {
		result[i] = v
	}
	return result
}
